feat: dereference.preservedProperties for preserving data during dereferencing#369
Merged
jonluca merged 3 commits intoAPIDevTools:mainfrom Jan 28, 2025
erunion:feat/preserving-dereferenced-properties
Merged
feat: dereference.preservedProperties for preserving data during dereferencing#369jonluca merged 3 commits intoAPIDevTools:mainfrom erunion:feat/preserving-dereferenced-properties
dereference.preservedProperties for preserving data during dereferencing#369jonluca merged 3 commits intoAPIDevTools:mainfrom
erunion:feat/preserving-dereferenced-properties
Conversation
jonluca
reviewed
Jan 28, 2025
jonluca
reviewed
Jan 28, 2025
| if (obj[key] !== dereferenced.value) { | ||
| // If we have properties we want to preserve from our derefernced schema then we need | ||
| // to copy them over to our new object. | ||
| const preserved: Map<string, unknown> = new Map(); |
Member
There was a problem hiding this comment.
nit: can we wrap this logic and this object allocation inside a check for if derefOptions?.preservedProperties is set? if its not set we can skip a lot of this logic.
Pull Request Test Coverage Report for Build 13020401245Warning: This coverage report may be inaccurate.This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.
Details
💛 - Coveralls |
Member
|
This lgtm - if you can address the minor comment then I'll merge it in. Thanks! |
Contributor
Author
|
@jonluca I've just pushed up your recs. Thanks for the speedy review! 💨 |
|
🎉 This PR is included in version 11.9.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This introduces a new
dereference.preservedPropertiesconfiguration that allows for custom$refdereferencing behavior to happen where if you want to preserve, and prioritize an existing, property you can.The use case for this is theOpenAPI 3.1 specification where because it allows you to define a
descriptionand/orsummaryalongside a$refpointer, and require that thatdescriptionandsummarytake precedence over any that may be inside of the referenced schema there is currently no way to handle this within the library currently.For example, the following schema:
With the existing dereferencing behavior this schema is dereferenced into the following:
However, because in an OpenAPI 3.1 definition I would want to use "Someone's secret name" instead of "Someone's name" on the
secretNameproperty, using this new configuration I can do that:swagger-parser) and conditionally feed in this config for OpenAPI 3.1 definitions.Closes #365